/* Soubor je ulozen v kodovani UTF-8.
 * Kontrola kódování: Příliš žluťoučký kůň úpěl ďábelské ódy. */

package cz.vse.adventura.po1715.xshet00_shevtsova.hra;

import static cz.vse.adventura.po1715.xshet00_shevtsova.hra.Texty.*;
import cz.vse.adventura.po1715.xshet00_shevtsova.hra.Object.*;


/*******************************************************************************
 * Instance třídy {@code PrikazPoloz} představují příkaz polož
 *
 * @author    Tatyana Shevtsova
 * @version   
 */
public class PrikazPoloz extends APrikaz
{
//== KONSTANTNI ATRIBUTY TRIDY =================================================
//== PROMENNE ATRIBUTY TRIDY ===================================================
//== KONSTANTNI ATRIBUTY INSTANCI ==============================================
//== PROMENNE ATRIBUTY INSTANCI ================================================
//== NESOUKROME METODY TRIDY ===================================================

//##############################################################################
//== KONSTRUKTORY A TOVARNI METODY =============================================

    /***************************************************************************
     * Vytvori prikaz, po jehoz zadani se hrac pokusí položit zadaný předmět.
     * Tento předmět musí být v daném okamžiku v batohu.
     */
    PrikazPoloz()
    {
        super( pPOLOŽ, //"Polož",
           "Příkaz vyjme předmět z batohu a odloží jej v aktuální místnosti.\n"+
           "Aby byl příkaz proveden, musí byt zadán název předmětu\n"+
           "a předmět zadaného názvu musí byt aktuálně v batohu.");
    }


//== ABSTRAKTNI METODY =========================================================
//== NESOUKROME METODY INSTANCI ================================================

    /***************************************************************************
     * Pokusi se vyjmout z batohu a polozit v mistnosti predmet zadaneho nazvu;
     * před tím však zkontroluje, je-li zadán předmět, který se má položit,
     * a je-li tento předmět v batohu.
     *
     * @param  parametry Nazev pokladaneho predmetu
     * @return Text zpravy vypsane po porovedeni prikazu
     */
    @Override
    public String execute( String... parametry )
    {
        if( (parametry != null)      &&
            (parametry.length > 0) )
        {
            String   nazev   = parametry[0];
            Hra_destnik      hra     = Hra_destnik.getHra();
            Bag    batoh   = hra.getBag();
            Object  predmet = batoh.vyjmi( nazev );
            if( predmet == null ) {
                return zNENÍ_V_BATOHU + nazev;              //==========>
//                return "Předmět není v batohu: " + nazev;   //==========>
            }
            Mistnost am = Mistnost.getAktuálníMístnost();
            am.poloz( predmet);
            return zPOLOŽENO + predmet.getName();
//            return "Položil(a) jste předmět: " + predmet.getName();
        }                                                   //==========>
        return zPŘEDMĚT_NEZADAN;
//        return "Je třeba zadat název pokládaného předmětu"; //==========>
    }


//== SOUKROME A POMOCNE METODY TRIDY ===========================================
//== SOUKROME A POMOCNE METODY INSTANCI ========================================
//== VNORENE A VNITRNI TRIDY ===================================================
//== TESTY A METODA MAIN =======================================================
}
